package com.hsnn.medstgmini.base.dict.service.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.hsnn.medstgmini.base.dict.dao.DicAreaDao;
import com.hsnn.medstgmini.base.dict.model.DicArea;
import com.hsnn.medstgmini.base.dict.model.form.DicAreaForm;
import com.hsnn.medstgmini.base.dict.service.DicAreaManager;
import com.hsnn.medstgmini.sys.dao.SysUserDao;
import com.hsnn.medstgmini.sys.model.SysUser;
import com.hsnn.medstgmini.util.FormatDate;
import com.hsnn.medstgmini.util.Pagination;
import com.hsnn.medstgmini.util.ParseDate;
import com.hsnn.medstgmini.util.ParseNumber;
/**
 * 
 *@category 地区字典管理实现类
 *@author 邱磊
 *@date 2015年6月10日 下午4:11:36
 */
@Service("dicAreaManager")
public class DicAreaManagerImpl implements DicAreaManager {
	
	
	@Autowired
	private DicAreaDao dicAreaDao;
	@Autowired
	private SysUserDao sysUserdao;
	
	/**
	 * 
	 *@category 根据地区编码查询地区信息
	 *@author 邱磊
	 *@date 2015年6月10日 下午4:14:18
	 *@param areaid 地区编码
	 *@return
		 */
	public DicAreaForm getDicAreaById(String areaid){
		Map<String, Object> data = dicAreaDao.getSqlDicAreaById(areaid);
		return this.formartForm(data);
	}

	@Override
	public DicAreaForm getAreaById(String areaid){
		Object[] obj=(Object[]) dicAreaDao.getAreaById(areaid);
		DicAreaForm data = new DicAreaForm();
		data.setAreaId(obj[0]==null?"":obj[0].toString());
		data.setAreaName(obj[1]==null?"":obj[1].toString());
		return data;
	}
	
	private DicAreaForm formartForm(Map<String, Object> data){
		if (null == data){
			return null;
		}
		DicAreaForm form = new DicAreaForm();
		form.setAreaId(data.get("area_id")==null?null:data.get("area_id").toString());
		form.setAreaName(data.get("area_name")==null?null:data.get("area_name").toString());
		form.setArFullname(data.get("ar_fullname")==null?null:data.get("ar_fullname").toString());
		form.setArShortname(data.get("ar_shortname")==null?null:data.get("ar_shortname").toString());
		form.setFatherAreaCode(data.get("father_id")==null?null:data.get("father_id").toString());
		form.setSortId(data.get("area_id")==null?null:ParseNumber.toInteger(data.get("sort_id").toString()));
		form.setStatus(data.get("status")==null?null:ParseNumber.toInteger(data.get("status").toString()));
		SysUser user = sysUserdao.getUserById(data.get("upd_user")==null?"":data.get("upd_user").toString());
		if (null != user){
			form.setUpdUser(user.getName());
		}
		form.setUpdDatetime(data.get("upd_datetime") == null ? "" : FormatDate.toShortFormat(ParseDate.fromFullFormat(data.get("upd_datetime").toString())));
		return form;
	}


	/**
	 * @category 通过区域名称获取 区域代码
	 * @author 韩守松
	 * @date   2015年6月13日
	 * @param  @param  dicArea
	 * @param  @return
	 */
	
	@Override
	public List<DicArea> getDicAreaByArfullName(DicArea dicArea) {
		return dicAreaDao.getDicAreaByArfullName(dicArea);
	}
	
	/**
	 * 获取地区查看列表数据
	 * @param page
	 * @return
	 */
	@Override
	public Pagination getdicAreaList(Pagination page) {
		return dicAreaDao.getdicAreaList(page);
	}
	
	/**
	 * 停用启用（包含批量）
	 * @param page
	 * @return
	 */
	@Transactional
	@Override
	public int changeStatus(DicArea dicArea){
		return dicAreaDao.changeStatus(dicArea);
	}
	
	/**
	 * 
	 *@category 新增保存地区信息
	 *@author 邱磊
	 *@date 2015年6月10日 下午4:15:33
	 *@param data 新增的地区信息
	 *@return

	@Transactional
	public String addDicArea(DicArea data){
		return dicAreaDao.addDicArea(data);
	}
		 */
	
	/**
	 * 编辑 保存地区信息
	 * @param page
	 * @return
	 */
	@Transactional
	@Override
	public void updateDicArea(Pagination page) {
		dicAreaDao.updateDicArea(page);
	}
	
	/**
	 * 新增 保存地区信息
	 * @param page
	 * @return
	 */
	@Transactional
	@Override
	public void addDicArea(Pagination page) {
		dicAreaDao.addDicArea(page);
	}
	
	/**
	 * 
	 *@category 根据ID或name查询有无重复数据
	 *@author 邱磊
	 *@date 2015年6月10日 下午4:07:08
	 *@param data 新增的地区信息
	 *@return
	 */
	@Override
	public List<DicArea> getDicAreaBy(String key, String value, String areaId) {
		return dicAreaDao.getDicAreaBy(key, value, areaId);
	}	
	public List<Map<String, Object>> getAreaInfoByName(String province, String areaName){
		return dicAreaDao.getAreaInfoByName(province, areaName);
	}
	/**
	 * 
	 *@category 查询本省所有的县区
	 *@author 邱磊
	 *@date 2015年11月19日 上午10:40:01
	 *@param 
	 *@return Pagination
	 */
	public Pagination getProvinceCounty(Pagination page){
		return dicAreaDao.getProvinceCounty(page);
	}
	public List<Map<String, Object>> getAreaByFatherId(String fatherId){
		return dicAreaDao.getAreaByFatherId(fatherId);
	}
	public Map<String, Object> getEveyAreaDelNum(){
		List<Map<String, Object>> list = dicAreaDao.getEveyAreaDelNum();
		Map<String, Object> map = new HashMap<String, Object>();
		if (null != list && list.size() > 0){
			Map<String, Object> data = list.get(0);
			map.put("max_delnum_base", data.get("max_delnum_base")==null?"0":"".equals(data.get("max_delnum_base").toString())?"0":data.get("max_delnum_base").toString());
			map.put("max_delnum_county", data.get("max_delnum_county")==null?"0":"".equals(data.get("max_delnum_county").toString())?"0":data.get("max_delnum_county").toString());
		} else {
			map.put("max_delnum_base", 0);
			map.put("max_delnum_county", 0);
		}
		return map;
	}
	public Map<String, Object> getAreaByAreaId(String areaId){
		return dicAreaDao.getAreaByAreaId(areaId);
	}
	public Pagination getMyProvinceArea(Pagination page){
		List<Map<String, Object>> list = dicAreaDao.getMyProvinceArea(page);
		page.setRows(list);
		page.setRecords(list.size());
		return page;
	}

	@Override
	public Pagination getMyProvinceAreaByPs(Pagination page) {
		List<Map<String, Object>> list = dicAreaDao.getMyProvinceAreaByPs(page);
		page.setRows(list);
		page.setRecords(list.size());
		return page;
	}
}